home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 4 / BBS in a Box - Macintosh - Volume IV (January 1992) (BBS in a Box).iso / Files / Prog / M / LSC213.cpt / OSUtil.h < prev    next >
Encoding:
C/C++ Source or Header  |  1987-11-09  |  2.7 KB  |  186 lines  |  [TEXT/KAHL]

  1.  
  2. /*
  3.  *  OSUtil.h
  4.  *
  5.  *  Copyright (c) 1986, 1987 THINK Technologies, Inc.
  6.  *  These interfaces are based on information copyrighted
  7.  *  by Apple Computer, Inc., 1985, 1986, 1987.
  8.  *
  9.  */
  10.  
  11. #ifndef    _OSUtil_
  12. #define _OSUtil_
  13.  
  14. #ifndef    _MacTypes_
  15. #include "MacTypes.h"
  16. #endif
  17.  
  18. /*  result codes  */
  19. enum {
  20.     prInitErr = -88,
  21.     prWrErr,
  22.     clkWrErr,
  23.     clkRdErr,
  24.     seNoDB = -8,
  25.     unimpErr = -4,
  26.     corErr,
  27.     vTypErr,
  28.     qErr
  29. };
  30.  
  31. /* queue types */
  32. enum {
  33.     vType = 1,
  34.     ioQType,
  35.     drvQType,
  36.     evType,
  37.     fsQType
  38. };
  39.  
  40. /* machine types */
  41. enum { macXLMachine, macMachine };
  42.  
  43. /* trap types */
  44. enum { OSTrap, ToolTrap };
  45.  
  46. /* serial port use */
  47. enum { useFree, useATalk, useASync };
  48.  
  49. typedef    struct    
  50.     {
  51.     Byte        valid;
  52.     Byte        aTalkA;
  53.     Byte        aTalkB;
  54.     Byte        config;
  55.     int            portA;
  56.     int            portB;
  57.     long        alarm;
  58.     int            font;
  59.     int            kbdPrint;
  60.     int            volClik;
  61.     int            misc;
  62.     } SysParmType,* SysPPtr ;
  63.  
  64. typedef    struct QElem
  65.     {
  66.     struct QElem *qLink;
  67.     int            qType;
  68.     char        qData[];
  69.     } QElem, *QElemPtr;
  70.  
  71. typedef    struct QHdr
  72.     {        
  73.     int            qFlags;
  74.     QElemPtr    qHead;
  75.     QElemPtr    qTail;
  76.     } QHdr,* QHdrPtr ;
  77.     
  78. typedef    struct    
  79.     {
  80.     int            year;
  81.     int            month;
  82.     int            day;
  83.     int            hour;
  84.     int            minute;
  85.     int            second;
  86.     int            dayOfWeek;
  87.     } DateTimeRec ;
  88.  
  89.  
  90. enum { false32b, true32b };
  91.  
  92.  
  93. /*  access A5 from interrupt level  */
  94. #define SetUpA5()        asm {    move.l    a5,-(sp)    \
  95.                                 move.l    0x904,a5    }
  96. #define RestoreA5()        asm {    move.l    (sp)+,a5    }
  97.  
  98.  
  99. /* ---------- SysEnvirons ---------- */
  100.  
  101.  
  102. typedef struct SysEnvRec {
  103.     short            environsVersion;
  104.     short            machineType;
  105.     short            systemVersion;
  106.     short            processor;
  107.     Boolean            hasFPU;
  108.     Boolean            hasColorQD;
  109.     short            keyBoardType;
  110.     short            atDrvrVersNum;
  111.     short            sysVRefNum;
  112. } SysEnvRec;
  113.  
  114. /*  machine types  */
  115. enum {
  116.     envXL = -2,
  117.     envMac,
  118.     envMachUnknown,
  119.     env512KE,
  120.     envMacPlus,
  121.     envSE,
  122.     envMacII
  123. };
  124.  
  125. /*  CPU types  */
  126. enum {
  127.     envCPUUnknown,
  128.     env68000,
  129.     env68010,
  130.     env68020
  131. };
  132.  
  133. /*  keyboard types  */
  134. enum {
  135.     envUnknownKbd,
  136.     envMacKbd,
  137.     envMacAndPad,
  138.     envMacPlusKbd,
  139.     envAExtendKbd,
  140.     envStandADBKbd
  141. };
  142.  
  143. /*  error codes  */
  144. enum {
  145.     envSelTooBig = -5502,
  146.     envBadSel,
  147.     envNotPresent
  148. };
  149.  
  150.  
  151. /* ---------- Deferred Task Manager ---------- */
  152.  
  153.  
  154. typedef struct DeferredTask {
  155.     QElemPtr            qLink;
  156.     short                qType;
  157.     short                dtFlags;
  158.     ProcPtr                dtAddr;
  159.     long                dtParm;
  160.     long                dtReserved;
  161. } DeferredTask;
  162.  
  163.  
  164. /* ---------- ShutDown Manager ---------- */
  165.  
  166.  
  167. #define    sdOnPowerOff        1
  168. #define    sdOnRestart            2
  169. #define    sdOnUnmount            4
  170. #define    sdOnDrivers            8
  171. #define    sdRestartOrPower    (sdOnRestart+sdOnPowerOff)
  172.  
  173.  
  174. /* ---------- */
  175.  
  176.  
  177. /*  functions returning non-integral values  */
  178. pascal SysPPtr GetSysPPtr();
  179.  
  180. /*  low-memory globals  */
  181. extern int SysVersion : 0x15A;
  182. extern SysParmType SysParam : 0x1F8;
  183. extern long Time : 0x20C;
  184.  
  185.  
  186. #endif _OSUtil_